#encoding: UTF-8
require "nokogiri"
require "open-uri"
require "mysql2"

class Resfut

end

conect =  Mysql2::Client.new(:host => 'localhost',:username => 'root',:password => '1gutiote_',:database => 'resfut')


#Por ahora el html esta hardcodeado para liga-uruguaya, en un futuro se pasara por parametro el nombre de la liga que se desea crawlear.
html_page = "http://www.marca.com/deporte/central-de-datos/futbol/liga-uruguaya/apertura/2011/index.html"
html_page_calendario = "http://www.marca.com/deporte/central-de-datos/futbol/liga-uruguaya/apertura/2011/calendario.html"

liga_uruguaya = Nokogiri::HTML(open(html_page))
liga_uruguaya_calendario = Nokogiri::HTML(open(html_page_calendario))

tabla_posiciones_xpath = "//table[@id='clasificacion_completa']/tbody/*"
cant_equipos = liga_uruguaya.xpath(tabla_posiciones_xpath)   #Obtiene la tabla de posiciones
puts "Cantidad de equipos en la liga = #{cant_equipos.size()}"  #Imprime la cantidad de equipos que hay en la liga

temporada_xpath = "//div[@id='contenido']/div[@class='encabezado']/div[@class='nombre']/small/text()"
temporada = liga_uruguaya.xpath(temporada_xpath)


nombre_campeonato_text = "//div[@id='contenido']/div[@class='encabezado']/div[@class='nombre']/h4[@class='internacional']/text()"
nombre_campeonato = liga_uruguaya.xpath(nombre_campeonato_text).to_s.strip()
if conect.query("SELECT * FROM `campeonato`WHERE `campeonatonombre`='#{nombre_campeonato}' AND  `campeonatotemporada`='#{temporada}' AND `liga_idliga`=1;").size() !=1
  conect.query("INSERT INTO `campeonato`(`campeonatonombre`, `campeonatotemporada`, `liga_idliga`) VALUES ('#{nombre_campeonato}','#{temporada}',1);")
end


equipos_xpath = "//table[@id='clasificacion_completa']/tbody/tr/td[@class = 'equipo']/text()"
equipos = liga_uruguaya.xpath(equipos_xpath)
equipos.each do |equipo|
  if conect.query("SELECT * FROM `equipo` WHERE (equiponombre = '#{equipo}' AND liga_idliga = 1);").size() != 1
     conect.query("INSERT INTO `equipo`(`equiponombre`, `liga_idliga`) VALUES ('#{equipo}',1);")
     puts "Se inserto en la base de datos el equipo de nombre: #{equipo}"
  end
end

jornada_xpath = "//div[@class='jornada calendarioInternacional']"
jornadas = liga_uruguaya_calendario.xpath(jornada_xpath).size()  #Obtiene todas las jornadas de la liga
puts "Cantidad de jornadas a disputar en el torneo = #{jornadas}"  #Imprime la cantidad de jornadas de la liga

for i in 0..(jornadas-1) #Recorro todas las jornadas de la liga pasado por parametro
  partidos_xpath = "//div[@class='jornada calendarioInternacional'][#{i+1}]/table/tbody/tr"
  cant_partidos = liga_uruguaya_calendario.xpath(partidos_xpath).size() #Obtiene la cantidad de partidos de la jornada i

  fecha_jornada_xpath = "//div[@class='jornada calendarioInternacional'][#{i+1}]/table/thead/tr/th/text()"
  fecha_jornada = liga_uruguaya_calendario.xpath(fecha_jornada_xpath)  #Obtiene la fecha en que se jugo la jornada i+1

  puts "Cantidad de partidos de la jornada #{i+1} = #{cant_partidos}"  #Imprime la cantidad de partidos de la jornada i
  puts "Fecha en la que fue disputada = #{fecha_jornada}"  #Imprime la fecha en la que se jugo la jornada i+1

  for j in 0..(cant_partidos-1)  #Recorro todos los partidos de la jornada i+1
    base_info_partido_xpath = partidos_xpath + "[#{j+1}]/"  #Base para el xpath a partir del cual se obtendran datos del partido j+1 de la jornada i+1
    equipo_local = liga_uruguaya_calendario.xpath(base_info_partido_xpath + "td[@class ='local']/span/text()")  #Obtiene el equipo local
    equipo_visitante = liga_uruguaya_calendario.xpath(base_info_partido_xpath + "td[@class ='visitante']/span/text()")  #Obtiene el equipo visitante

    resultado = liga_uruguaya_calendario.xpath(base_info_partido_xpath + "td[@class ='resultado']/text()")  #Obtiene el resultado
    resultado_local = resultado.to_s.split("-")[0].to_s.strip()
    resultado_visitante = resultado.to_s.split("-")[1].to_s.strip()

    puts "Partido #{j+1} de la jornada #{i+1} | #{equipo_local} vs #{equipo_visitante} = #{resultado_local}-#{resultado_visitante}" #Imprime el resultado obtenido en el partido j+1 de la jornada i+1
    #En un futuro en vez de imprimir deberia de guardar en la base de datos
  end
end

